From: Matthias Clasen Date: Mon, 6 Nov 2017 00:30:54 +0000 (-0500) Subject: Stop using the root window in gdk_window_create_similar_image_surface X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~23^2~835 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=c08a6a062fdef4ca76f657456363a77e9f1137aa;p=gtk4.git Stop using the root window in gdk_window_create_similar_image_surface Just create a plain image surface if we don't get a window. This should work just fine and lets us drop another implicit use of the root window. --- diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 729654de69..2687dc0b0b 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -6016,20 +6016,23 @@ gdk_window_create_similar_image_surface (GdkWindow * window, int height, int scale) { - GdkWindowImplClass *impl_class; - cairo_surface_t *window_surface, *surface; + cairo_surface_t *surface; - g_return_val_if_fail (window ==NULL || GDK_IS_WINDOW (window), NULL); + g_return_val_if_fail (window == NULL || GDK_IS_WINDOW (window), NULL); if (window == NULL) - window = gdk_display_get_root_window (gdk_display_get_default ()); - - impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl); - - if (impl_class->create_similar_image_surface) - surface = impl_class->create_similar_image_surface (window, format, width, height); + { + surface = cairo_image_surface_create (format, width, height); + } + else if (GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_similar_image_surface) + { + surface = + GDK_WINDOW_iMPL_GET_CLASS (window->impl)->create_similar_image_surface (window, format, width, height); + } else { + cairo_surface_t *window_surface; + window_surface = gdk_window_ref_impl_surface (window); surface = cairo_surface_create_similar_image (window_surface,